package cn.yshujia.annotation;

import cn.yshujia.constant.SystemConst;
import cn.yshujia.enums.LimitEnum;
import org.springframework.web.bind.annotation.Mapping;

import java.lang.annotation.*;

/**
 * @author YShuJia
 * @create 2024/4/23
 * @description 节流
 */


@Target (ElementType.METHOD)
@Retention (RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RateLimiter {
	/**
	 * 限流key
	 */
	public String key() default SystemConst.RATE_LIMIT_KEY;
	
	/**
	 * 限流时间,单位秒 默认 5秒内允许请求3次
	 */
	public int time() default 5;
	
	/**
	 * 限流次数
	 */
	public int count() default 3;
	
	/**
	 * 限流类型
	 */
	public LimitEnum limitType() default LimitEnum.IP;
}

